package com.tfswx.fljdmxyy.service;

import com.tfswx.fljdmxyy.dto.rygl.*;
import com.tfswx.fljdmxyy.query.rygl.*;
import com.tfswx.newbie.boot.starter.page.PageParam;
import com.tfswx.newbie.boot.starter.page.PageResult;

import java.util.List;

/**
 * 人员管理服务
 *
 * @Author 陈文佳
 * @Date 2023/03/24
 */
public interface RyglService {

    /**
     * 登录
     *
     * @param dto 登录入参
     * @return LoginOutputDTO 登录出参
     */
    LoginOutputDTO login(LoginInputDTO dto);

    /**
     * 第三方登录
     *
     * @param param 第三方登录入参
     * @return LoginOutputDTO 第三方登录出参
     */
    LoginOutputDTO dsfLogin(DsfLoginInputDTO param);

    /**
     * 新增人员信息
     *
     * @param dto 新增人员信息入参
     * @return RyxxAddOutputDTO 新增人员信息出参
     */
    RyxxAddOutputDTO addRyxx(RyxxAddInputDTO dto);

    /**
     * 修改人员信息
     *
     * @param dto 修改人员信息入参
     * @return RyxxUpdateOutputDTO 修改人员信息出参
     */
    RyxxUpdateOutputDTO updateRyxx(RyxxUpdateInputDTO dto);

    /**
     * 用户登出
     */
    void logout();

    /**
     * 删除人员信息
     *
     * @param dto 删除人员信息入参
     * @return RyxxDeleteOutputDTO 删除人员信息出参
     */
    RyxxDeleteOutputDTO deleteRyxx(RyxxDeleteInputDTO dto);

    /**
     * 查询单位下所有人员
     *
     * @param dto 查询单位下所有人员入参
     * @return List<RyxxQueryResult> 查询单位下所有人员出参
     */
    List<RyxxQueryResult> queryRylb(RyxxQueryParam dto);

    /**
     * 获取登录人员
     *
     * @return UserInfo 获取登录人员出参
     */
    RyxxOutputDTO getUserInfo();

    /**
     * 分页查询人员信息
     *
     * @param param 分页查询人员信息参数
     * @return PageResult<RyxxQueryResult> 分页查询人员信息出参
     */
    PageResult<RyxxQueryResult> queryRyxx(PageParam<RyxxQueryParam> param);

    /**
     * 获取登录人信息
     *
     * @return LoginOutputDTO 获取登录人信息出参
     */
    LoginOutputDTO heartBeat();

    /**
     * 查询统一业务人员列表
     *
     * @param param 查询统一业务人员列表入参
     * @return List<TyywryQueryResult> 查询统一业务人员列表出参
     */
    List<TyywryQueryResult> queryTyywry(TyywryQueryParam param);

    /**
     * 获取人员功能权限
     *
     * @param param 获取人员功能权限入参
     * @return List<RygnQueryResult> 获取人员功能权限出参
     */
    List<RygnQueryResult> queryRygn(RygnQueryParam param);

    /**
     * 修改密码
     *
     * @param dto 修改密码入参
     * @return Boolean 修改密码出参
     */
    Boolean updateDlmm(DlmmUpdateInputDTO dto);

    /**
     * 重置密码
     *
     * @param dto 重置密码入参
     * @return Boolean 重置密码出参
     */
    Boolean resetDlmm(DlmmResetInputDTO dto);

    /**
     * 新增人员集合
     *
     * @param dto 新增人员集合入参
     * @return RylbAddOutputDTO 新增人员集合出参
     */
    RylbAddOutputDTO addRylb(RylbBatchAddInputDTO dto);

    /**
     * 解锁登录
     *
     * @param dto 解锁登录入参
     * @return LoginOutputDTO 解锁登录出参
     */
    LoginOutputDTO unlockLogin(UnlockLoginInputDTO dto);

}
